import yaml,json,csv,openpyxl
import os
import pandas as pd
def get_endpoint(endpoint_name,file_path=None):
    '''

    :param endpoint: api 端点的名称
    :param file_path: 文件的路径
    :return:
    '''
    if file_path is None:
        # 获取当前文件的绝对路径
        current_dir=os.path.dirname(os.path.abspath(__file__))
        # 获取目标文件的路径时间拼接的方法
        file_path=os.path.join(current_dir,'../Config/endpoints.yaml')
    with open(file_path,'r',encoding='utf-8') as f:
        # 使用yaml的安全读法
        endpoints=yaml.safe_load(f)
        keys=endpoint_name.split('.')
        for key in keys:
            endpoints=endpoints[key]
        return endpoints

def read_yaml(file_path):
    """读取 YAML 文件并返回数据"""
    with open(file_path, 'r', encoding='utf-8') as f:
        # 加载 YAML 数据（返回字典或列表）
        data = yaml.safe_load(f)
    return data




def read_json(file_path):
    """读取 JSON 文件并返回数据（字典或列表）"""
    with open(file_path, 'r', encoding='utf-8') as f:
        data = json.load(f)  # 解析 JSON 数据
    return data

def read_csv(file_path):
    """读取 CSV 文件并返回字典列表，自动适配列结构和数量
    Args:
        file_path: 要读取的 CSV 文件路径

    Returns:
        list: 包含有序字典的列表，每个字典对应一行数据
    """
    test_data = []
    with open(file_path, 'r', newline='', encoding='utf-8') as csvfile:
        # DictReader  将每一行数据解析为字典的形式
        reader = csv.DictReader(csvfile)
        for row in reader:
            # 将每行数据转换为字符串类型的有序字典、
            # key: str(value)
            # 保持键 key 不变
            #
            # 将值 value 通过 str() 函数转换为字符串

            processed_row = {key: str(value) for key, value in row.items()}
            test_data.append(processed_row)
    return test_data

#  获取excel表格中的数据
# def read_excel(file_path, sheet_name):
#     file = openpyxl.load_workbook(file_path)
#     name = file[sheet_name]
#     datas = []
#     for row in name.iter_rows(min_row=2, values_only=True):  # 跳过表头
#         datas.append(row)
#     return datas
def read_excel(file_path, sheet_name):
    df = pd.read_excel(file_path, sheet_name=sheet_name)
    # 将 DataFrame 转成字典列表，每一行是一个字典，键是表头，值是对应单元格内容
    return df.to_dict(orient='records')
